using System.Collections.Generic;

namespace MTG.DTO
{
    public interface ICard
    {
        /// <summary>
        /// Holds a string of the current name of the card
        /// </summary>
        string CardName
        {
            get;
            set;
        }

        /// <summary>
        /// Holds an id of the current card (if more than one are in play)
        /// </summary>
        System.Guid Id
        {
            get;
            set;
        }

        /// <summary>
        /// An enumeration of the type of card
        /// </summary>
        CardType CardType
        {
            get;
            set;
        }

        /// <summary>
        /// An enumeration of the rarity of the card
        /// </summary>
        CardRarity CardRarity
        {
            get;
            set;
        }

        /// <summary>
        /// A bag of properties that can be used to define the card (e.g. description, power, toughness, etc.)
        /// </summary>
        IDictionary<string, object> Properties
        {
            get;
            set;
        }

        /// <summary>
        /// set a property in the property bag describing this card
        /// </summary>
        void SetProperty(string strProperty, string objProperty);

        /// <summary>
        /// retrieve an object out of the property bag
        /// </summary>
        object GetProperty(string strProperty);
    }
}